<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

<!--引入fn函数库-->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ page language="java"  import="java.util.*"%>
<%@page import="com.test.Person"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>EL隐式对象</title>
	</head>

	<body>
		<br/>1、pageContext对象：获取JSP页面中的pageContext对象<br/>
		${pageContext}
		<br/>2、pageScope对象：获取JSP页面中的pageScope对象<br/>
		<%
			pageContext.setAttribute("name","tt");
		%>
			${pageScope.name}
		<br/>3、requestScope对象：从request域(requestScope)中获取数据<br/>
		<%
			request.setAttribute("name1","requestScope");
		%>
		${requestScope.name};
		
		<br/>4、sessionScope对象：从session域(sessionScope)中获取数据<br/>
		<%
			session.setAttribute("sess","session");
			
		%>
		${sessionScope.sess};
		
		<br/>5、applicationScope对象：从application域(applicationScope)中获取数据<br/>
		<%
			application.setAttribute("appli","applicat");
		%>
		${applicationScope.appli}
		
		<br/>6、param对象：获得用于保存请求参数map，并从map中获取数据<br/>
		<!-- http://localhost:8080/test_en/el_2.jsp?name=aaa  -->
		${param.name}
		
		<!--${param.username} 此表达式会经常用在数据回显上 -->
		<form action="${pageContext.request.contextPath}/servlet/RegServlet" method="post">
			<input type="text" name="username" value="${param.username}">
			<input type="submit" value="注册">
		</form>
		
		<br/>7、paramValues对象：paramValues获得请求参数 <br/>
		<!-- http://localhost:8080/test_en/el_2.jsp?name=aaa&&name=bbb -->
		${paramValues.name[0]}
		${paramValues.name[1]}
		
		<br/>8、header对象：header获得请求头<br/>
		${header.Accept}<br />
		<%--${header.Accept-Encoding} 这样写会报错
			 测试headerValues时，如果头里面有“-” ，例Accept-Encoding，则要headerValues[“Accept-Encoding”]
		--%>
		${header["Accept-Encoding"]}
		
		<br />9、headerValues对象：headerValues获得请求头的值<br/>
		<%--headerValues表示一个保存了所有http请求头字段的Map对象，它对于某个请求参数，返回的是一个string[]数组 
			例如：headerValues.Accept返回的是一个string[]数组 ，headerValues.Accept[0]取出数组中的第一个值
		--%>
		${headerValues.Accept[0]}<br/>
		<%--${headerValues.Accept-Encoding} 这样写会报错
			 测试headerValues时，如果头里面有“-” ，例Accept-Encoding，则要headerValues[“Accept-Encoding”]
			 headerValues["Accept-Encoding"]返回的是一个string[]数组，headerValues["Accept-Encoding"][0]取出数组中的第一个值
		--%>
		${headerValues["Accept-Encoding"][0]}
		
		<br/>10、cookie对象：cookie对象获取客户机提交的cookie<br/>
		<!-- 从cookie隐式对象中根据名称获取到的是cookie对象,要想获取值，还需要.value -->
		 ${cookie.JSESSIONID.value}  //保存所有cookie的map
		 <br/>11、initParam对象：initParam对象获取在web.xml文件中配置的初始化参数
		 <!--
		 	web.xml文件中配置初始化参数
		 	<context-param>
		 		<param-name>aa</param-name>
		 		<param-value>bb</param-value>
		 	 </context-param>
		 	 <context-param>
		 	 	<param-name>root</param-name>
		 	 	<param-value>/test_en</param-value>
		 	 </context-param>
		 -->
		 <%--获取servletContext中用于保存初始化参数的map --%>
		 ${initParam.aa}<br />
		 ${initParam.root}
	</body>

</html>